#include "selain.h"

void selain::Vaihdasivua()
{
        tarkistus = QString(osoiterivi->text());

        if(tarkistus.startsWith("http://"))
        {
         url = QUrl(osoiterivi->text());
         sivu->load(url);
        }

        else
        {
         osoite = "http://";
         osoite += tarkistus;
         url = QUrl(osoite);
         sivu->load(url);
        }
}

void selain::Ladattu(bool ok)
{
        if (ok)
        {
         osoiterivi->setText(sivu->url().toString());
        }

        else
        {
            sivu->setHtml(QString("<h1>Virhe!</h1><p>Sivua ei voitu ladata!</p>"));
        }
}

void selain::Suurenna()
{
         kerroin = kerroin+0.1;
         if (kerroin > 2)
          kerroin = 2;
         sivu->setZoomFactor(kerroin);
}

void selain::Pienenna()
{
         kerroin = kerroin-0.1;
         if (kerroin < 0.5)
          kerroin = 0.5;
         sivu->setZoomFactor(kerroin);
}

void selain::Eteen()
{
    sivu->page()->triggerAction(QWebPage::Forward);
}

void selain::Taakse()
{
    sivu->page()->triggerAction(QWebPage::Back);
}

void selain::Pysayta()
{
    VaihdaNappejaPaivita();
    sivu->page()->triggerAction(QWebPage::Stop);
}

void selain::Paivita()
{
    VaihdaNappejaPysayta();
    sivu->page()->triggerAction(QWebPage::Reload);
}

void selain::VaihdaNappejaPaivita()
{
    pysayta->hide();
    paivita->show();
}

void selain::VaihdaNappejaPysayta()
{
    pysayta->show();
    paivita->hide();
}


selain::selain(QWidget *parent) : QWidget(parent)
{
        kerroin = 1;

        paalayout = new QVBoxLayout;
        osoitelayout = new QHBoxLayout;
        nappilayout = new QHBoxLayout;

        nappilayout->setAlignment(Qt::AlignLeft);

        suurenna = new QToolButton(this);
        suurenna->setIcon(QIcon(":/plus.png"));
        pienenna = new QToolButton(this);
        pienenna->setIcon(QIcon(":/miinus.png"));

        sivu = new QWebView(this);
        sivu->setZoomFactor(kerroin);

        osoiterivi = new QLineEdit(this);
        osoitelayout->addWidget(osoiterivi);
        osoitelayout->addWidget(suurenna);
        osoitelayout->addWidget(pienenna);

        connect(osoiterivi, SIGNAL(returnPressed()), SLOT(Vaihdasivua()));

        connect(suurenna, SIGNAL(clicked()), this, SLOT(Suurenna()));
        connect(pienenna, SIGNAL(clicked()), this, SLOT(Pienenna()));

        taakse = new QToolButton(this);
        taakse->setIcon(QIcon(":/taakse.png"));
        eteen = new QToolButton(this);
        eteen->setIcon(QIcon(":/eteen.png"));
        pysayta = new QToolButton(this);
        pysayta->setIcon(QIcon(":/pysayta.png"));
        paivita = new QToolButton(this);
        paivita->setIcon(QIcon(":/paivita.png"));
        paivita->setShortcut(tr("F5"));

        pysayta->hide();
        paivita->show();

        nappilayout->addWidget(taakse);
        nappilayout->addWidget(eteen);
        nappilayout->addWidget(pysayta);
        nappilayout->addWidget(paivita);

        connect(taakse, SIGNAL(clicked()), this, SLOT(Taakse()));
        connect(eteen, SIGNAL(clicked()), this, SLOT(Eteen()));
        connect(pysayta, SIGNAL(clicked()), this, SLOT(Pysayta()));
        connect(paivita, SIGNAL(clicked()), this, SLOT(Paivita()));

        sivu->load(QUrl("http://google.fi"));
        osoiterivi->setText(sivu->url().toString());

        connect(sivu, SIGNAL(loadFinished(bool)), this, SLOT(Ladattu(bool)));
        connect(sivu, SIGNAL(loadStarted()), this, SLOT(VaihdaNappejaPysayta()));
        connect(sivu, SIGNAL(loadFinished(bool)), this, SLOT(VaihdaNappejaPaivita()));

        paalayout->addLayout(osoitelayout);
        paalayout->addLayout(nappilayout);
        paalayout->addWidget(sivu);
        setLayout(paalayout);
}

selain::~selain()
{

}
